package com.legal.service.user;

/**
 * 滑动窗口限流服务
 * @author xiaopeng
 * @version 1.0
 */
public interface SlidingWindowRateLimiter {

    /**
     * 检查是否允许请求
     * @param key 限流key
     * @param windowSizeInSeconds 窗口大小(秒)
     * @param maxRequests 窗口内最大请求数
     * @return 是否允许
     */
    boolean allowRequest(String key, int windowSizeInSeconds, int maxRequests);

    /**
     * 只检查但不记录请求（用于预检查）
     */
    boolean peekRequest(String key, int windowSizeInSeconds, int maxRequests);
}
